//################################################################################
// MIT License
// Copyright (c) 2024 ZhangYihua
//
// Change Logs:
// Date           Author       Notes
// 2020-10-17     ZhangYihua   first version
//
// Description  : 
//################################################################################

module data2file #(
parameter           FILE                    = "file.txt",   // file path and name
parameter           FORMAT                  = "%h",         // data format
parameter           DW                      = 16,           // data width
parameter           NUM                     = 1024          // data number
) ( 
input                                       rst_n,
input                                       clk,
input                                       cke,

input                                       act,
input               [DW-1:0]                data    // data converted from file
);

//################################################################################
// define local varialbe and localparam
//################################################################################

//################################################################################
// main
//################################################################################

initial begin:WR
    integer fd;
    integer i;

    fd = $fopen(FILE, "w");

    @(posedge rst_n);

    @(posedge act or negedge act);

    for (i=0; i<NUM; i=i+1) begin
        @(posedge clk);
        while(cke==1'b0) begin
            @(posedge clk);
        end

        $fwrite(fd, FORMAT, data);
    end

    $fclose(fd);
end


//################################################################################
// ASSERTION
//################################################################################

`ifdef CBB_ASSERT_ON
// synopsys translate_off


// synopsys translate_on
`endif

endmodule
